package org.dpms.service.impl;

import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.dpms.dao.UserMapper;
import org.dpms.entity.User;
import org.dpms.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author guoq
 * @since 2018-03-30
 */
@Service(version = "1.0.0")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
	
	 @Autowired
	   private UserMapper userMapper;


	@Override
	public String login(String name) {
		User entity = new User();
		entity.setNickname(name);
		entity.setPswd(name+"123");
		userMapper.insert(entity);
		return name+" login sucess!";
		
	}

	@Override
	public boolean register(User user) {
		 // 看数据库中是否存在该账户
		User userInfo = userMapper.queryInfoByUsername(user.getNickname());
	    if(userInfo == null) {
			// 将用户名作为盐值
	        ByteSource salt = ByteSource.Util.bytes(user.getNickname());
	        /*
	        * MD5加密：
	        * 使用SimpleHash类对原始密码进行加密。
	        * 第一个参数代表使用MD5方式加密
	        * 第二个参数为原始密码
	        * 第三个参数为盐值，即用户名
	        * 第四个参数为加密次数
	        * 最后用toHex()方法将加密后的密码转成String
	        * */
	        String newPs = new SimpleHash("MD5", user.getPswd(), salt, 1024).toHex();
	        user.setPswd(newPs);
	        this.insert(user);
	        return true;
	    }
		return false;
	}

	@Override
	public User queryInfoByUsername(String username) {
		return userMapper.queryInfoByUsername(username);
	}
	
}
